 /* 
 * File:   cBackgroundScene.h
 * Author: josep
 *
 * Created on 10 / desembre / 2010, 00:57
 */

#ifndef CBACKGROUNDSCENE_H
#define	CBACKGROUNDSCENE_H

#include "cScene.h"
#include "Globals.h"


class cBackgroundScene : public cScene{
public:
    cBackgroundScene();
    cBackgroundScene(const cBackgroundScene& orig);
    virtual ~cBackgroundScene();
    virtual void Draw();
    void Init(cTexture *texture, bool repeatX, bool repeatY,
                float SpeedReductionFactorX=0, float SpeedReductionFactorY=0,
                float InitialOffsetX=0, float InitialOffsetY=0,
                cCamera *Camera=NULL);
    void Init(cCamera *Camera);
private:
    void Init();
    /** Indica si se activa el modo repeticioón de la imagen de fondo o no.
     */
    bool bRepeatX;
    bool bRepeatY;

    /** Indica la andidad de veces que se tienen que repetir en horizontal la textura paar llenar
     * el espacio de la escena si bRepeat está activado. En ese caso, el tamaño final del fondo
     * siemre será (como mínimo) 3 veces la medida de la imagen para poder simular un fondo
     * infinito. De ese modo daremos sensación de continudad durante los desplazamientos
     */
    int nRepeatImageX;
    
    /** Indica la andidad de veces que se tienen que repetir en vertical la textura para llenar
     * el espacio de la escena si bRepeat está activado. En ese caso, el tamaño final del fondo
     * siemre será (como mínimo) 3 veces la medida de la imagen para poder simular un fondo
     * infinito. De ese modo daremos sensación de continudad durante los desplazamientos
     */
    int nRepeatImageY;

    /** Margen de seguridad horixontal para evitar que la visión de la pantalla se
     * quede sin la imagen del fondo;
     */
    int SafetyMarginX;

    /** Margen de seguridad vertical para evitar que la visión de la pantalla se
     * quede sin la imagen del fondo;
     */
    int SafetyMarginY;

    /** Indica la anchura total del lienzo de fondo
     */
    int BackgroundWidth;

    /** Indica la altura total del lienzo de fondo
     */
    int BackgroundHeight;
};

#endif	/* CBACKGROUNDSCENE_H */

